define(["require", "exports"], function (require, exports) {
    /* --------------------------------------------------------------------------------------------
     * Copyright (c) Microsoft Corporation. All rights reserved.
     * Licensed under the MIT License. See License.txt in the project root for license information.
     * ------------------------------------------------------------------------------------------ */
    'use strict';
    Object.defineProperty(exports, "__esModule", { value: true });
    const toString = Object.prototype.toString;
    function boolean(value) {
        return value === true || value === false;
    }
    exports.boolean = boolean;
    function string(value) {
        return toString.call(value) === '[object String]';
    }
    exports.string = string;
    function number(value) {
        return toString.call(value) === '[object Number]';
    }
    exports.number = number;
    function error(value) {
        return toString.call(value) === '[object Error]';
    }
    exports.error = error;
    function func(value) {
        return toString.call(value) === '[object Function]';
    }
    exports.func = func;
    function array(value) {
        return Array.isArray(value);
    }
    exports.array = array;
    function stringArray(value) {
        return array(value) && value.every(elem => string(elem));
    }
    exports.stringArray = stringArray;
    function typedArray(value, check) {
        return Array.isArray(value) && value.every(check);
    }
    exports.typedArray = typedArray;
    function thenable(value) {
        return value && func(value.then);
    }
    exports.thenable = thenable;
});
